My '661 patent discloses an assembler/linker process that utilizes predetermined control program sequences together with program-change tables ("PCTs") of MRI parameter values in order to efficiently machine-replicate MRI-slice-specific instructions for execution by a MRI controller/sequencer. The exemplary technique disclosed in the '661 patent involves defining predetermined slice-specific program segments of machine-executable MRI sequencer instructions so as to reference symbolic addresses and predetermined PCTs. At link time, the program segments are accessed and corresponding symbolic addresses and/or referenced PCT entries are indexed to machine replicate a predetermined set of slice-specific program segments.
For many years now, Diasonics Medical Division (and later Toshiba) has been commercializing a "LSIMON" MRI control program Segment Editor which supports capabilities disclosed in my '661 patent. However, that Segment Editor and associated linker does not support general syntax for program segment arguments, nested loops and loop indices, multi-dimensional sequence parameter lookup tables, and parameter formulas (equations). The LSIMON MRI linker is limited to three loop names (S, R and C) and the use of these loops is restricted. This is especially true of the C index, which can only be used for an outer loop. Also, parameter lookup tables (which were called parameter change tables or "PCTs") would only be associated with either the S or C loop index. A newer version of the MRI Sequence Editor and linker included in the MRIMON program was commercially released more than a year ago. That newer version included a spreadsheet program segment representation but was not enhanced to include the further features disclosed herein since it was initially made to be backward compatible with LSIMON.
While the exemplary linker syntax and associated techniques disclosed in my '661 patent (and incorporated into LSIMON and its later MRIMON version) have been highly successful for development and full scale clinical MRI imaging systems, further improvements are possible. In particular, it would be highly desirable to extend such exemplary linker syntax/techniques so as to increase flexibility and efficiency without sacrificing verifiability and ease of software maintainability/debugging.
The present invention provides extended, improved linker syntax/techniques that maximize reuse of program segments in creating sequence programs, allow optimal compromise between detailed representation and efficient sequence program design and maintenance, and permit uniform application of the loop syntax to link/load commands for MRI sequencers with a wide range of hardware implementations.
The following are among some of the important features of an MRI control interface provided by the present invention:
generalized loops at the link level; PA1 loop index symbols representing loop identity can be associated with scope and/or range (with some kind of limited grammar in the link command itself that supports identification of scope and/or range); PA1 parameter tables can be associated with loop index symbols (any given table can be associated with N loop index symbols in order to provide multidimensional sequences); PA1 any level of loop nesting is possible; PA1 directed limited syntax providing limited grammar and syntax checking, and requiring user to explicitly enter information into the interface. PA1 a constant value; or PA1 a variable name; or PA1 a (globally defined) symbolic procedure argument; or PA1 a value specified by a formula; or PA1 a value referenced from a PCT; or PA1 if the "cell" is part of a PCT entry, it can refer to another PCT (thus allowing indirect PCT access).
By way of brief background, MRI sequencer program segment instructions may be regarded as machine states expressed as microcode instructions, with each microcode field corresponding to an entry in the program segment (or procedure) source code. A "procedure" is herein distinguished from a program segment by its property of having arguments passed to it in the link command. An overall programming model provided by the present invention generalizes microcode fields (including PCT entries) to "cells". Such cells may have "properties" or "attributes" such as, for example:
These techniques allow the possibility of having only a few program segments or procedures represent single-slice template sequences which support all spin echo or all partial flip or all 3D multi-slice/multi-volume imaging protocols for example--thereby drastically decreasing the total amount of code to be written and maintained.
The control interface provided by the present invention may be a separate (e.g., software) machine that can be interfaced to more than one hardware MRI sequencer and control system. The control interface processes link commands composed of syntax primitives including sequence program segment(s), procedure argument(s) (which may be enclosed by parentheses for example), and delimiters (e.g., curly brackets) indicating the beginning and end of loops and loop index symbols with associated loop index starting and ending values. The segments and/or procedures are program code fragments which are linked together as specified in the link command to create an ordered set of states which are encoded for the MRI sequencer hardware (regardless of its design) to execute. The result is a set of timed MRI system events which allow the creation of a complete MRI data set. Within the program segment(s) it is also possible to define loops for execution which are independent of the loops in the link command and which may reference line symbols in other program segments. A spreadsheet representation may be used for the program editor, with each sequence parameter occupying a cell.
A specific sequence parameter in a spreadsheet cell may be defined to be either fixed, a variable, dependent on a lookup table, or dependent on a formula (equation). In the case of the lookup table, a lookup index is associated with the table. Also, an entry in the lookup table may be fixed, a variable, dependent on another lookup table (this allows multidimensional tables), or on a formula (equation). As the linker creates the set of states for execution by the MRI sequencer, values specified with lookup tables are accessed when needed to set a parameter value by using the current loop index value for the loop symbol associated with that lookup table. In the case of multidimensional lookup tables, nested loops can be used to specify the value of a parameter. The loop syntax provides nesting of loops within multiple sets of curly brackets. Lookup tables can be grouped into sets identified by different levels, as in a 3D spreadsheet, and the link command will use the group of tables for the level specified at the end of the link command and preceded by a semi-colon.
A wide range of sequence coding requirements can be addressed with the broad capabilities of this type of programming model. The more generalized but constrained grammar/syntax also improves the self-documentation of the link commands and decreases the number of different sequences required to support desired sequence protocols. For example, the new techniques permit arguments in the calling specification of the sequence procedure(s) in the link command, and also allow a global system constant (e.g., TR or TE) to be used as an argument with internal derivation of the required parameter value(s) for a given machine state.
The exemplary syntax disclosed in the '661 patent provides only two inner software loops with very restricted usage for slice selection, and a rigid outer loop used for phase encoding. As mentioned above, one of the more salient features of the improved programming model and associated linker loop syntax and linker provided by the present invention is a generalized, more flexible outer loop and the capability for plural nested inner loops with arbitrary loop index symbols that may be used to index N-dimensional PCTs. In the preferred embodiment, the loops are provided at the link level and are used to iteratively generate multiple "copies" (with necessary variable information changed) of object microcode with all addresses resolved for execution by the sequencer.
Thus, the new loop index symbol feature provided by the present invention provides generalized looping at the link level. Loop index symbols represent loop identity. A grammar preferably requires loop index symbols to be explicitly associated with scope and/or range parameters such that the range of loop values is specified in the link command itself. Named loops are explicitly associated with parameter tables (PCTs). PCTs may be referenced by any number (one to N) of loop index symbols to provide nested looping capabilities such that any grammatically correct ordering of loop index symbol/table references can be used. A directed, limited syntax editor may be used to provide range checking and application specific syntax checking in order to enforce a limited grammar that is constrained to the particular MRI application for higher reliability. This is not the case if a commonly available programming language (e.g., C) is used.
Note also that program segments may include variables which require resolution at link time which are either global or passed by value or reference. This means that the program segments become procedures while still retaining the special properties of a program segment embedded in loop control structures which are part of the linker syntax.
One of the advantages of more generalized looping and other associated features provided by the present invention is the ability to accommodate three-dimensional imaging requirements much more efficiently. In the exemplary syntax described in the '661 patent, imaging sequences for three-dimensional imaging require multiple link commands ("P-commands"). In the more generalized syntax provided by the present invention, a new "D" loop enclosing the "C" loop can, for example, be used to specify repetition of the original "P-command." This allows a single linker command to generate slice-direction related instructions for a number of phase encodings with an axis perpendicular to the plane of the phase encoding gradient. A D-type PCT can be used in conjunction with this linker loop, with the D-index being re-evaluated after each complete set of phase encoded projections specified by the "C" loop.
Inner volume imaging has also been difficult to handle in the past since in such cases the 180 degree volume selective irradiation is perpendicular to the thick 90 degree slice selection irradiation which selects the cross-section for 3D phase encoding. The new generalized programming syntax/techniques provided by the present invention can be used to allow separate selection of the delta F frequency to be used for the 180 degree irradiation. The '661 patent discloses the use of an "S-field". In accordance with the more generalized syntax provided by presently preferred exemplary embodiment of the present invention, a second "J" loop may be provided enclosing the "S" loop. The "J" loop may be used to select the offset frequency from a PCT similar to the one used for electronic positioning along the axis of the patient. Such a link command allows for a continuum of TR and TE values through the arguments supplied to the basic sequence procedures combined to create the final sequence, while still providing a one-to-one relationship between the code specified by the link command and the code loaded into the sequencer memory. This one-to-one relationship is important to provide straightforward software verification and hardware debugging.
The preferred embodiment provided by the present invention also provides global definitions of special symbols and procedure arguments. Such global definitions provide various advantages in terms of avoiding duplication of code. For example, globally defined special symbols (e.g., the last letters in the alphabet, "X", "Y", "Z") may be used as entry points (assuming they have not already been encountered by the linker in previous segments). Thus, it becomes possible to provide, for example, a single instance of the entry symbol in the symbol table for the first instruction in the main "S" loop, and this entry symbol can be jumped to directly (thus saving a main routine instruction preceding the "S" loop and reducing the number of sequencer reloads). This is in contrast with the exemplary technique disclosed in the '661 patent, which required a main program segment to provide a jump destination.